//************************************************************
// 目的：簽章
//************************************************************
function getSigned(frm, P7SignatureClientObj, CertDBClientObj, VerifyCertificateObj) {
	
	var lRtn = 0;

	//選擇簽章憑證	
	if ((lRtn = CertDBClientObj.selectCertificateBySubjectCN_Ex(frm.serverCN.value,1)) !=0){//取出簽章
		
 		if (lRtn == 28) { 		
			  showErrorMessageDialog("簽章放行取消。錯誤代碼：28");		
		} else if (lRtn == 1) {		
		    showErrorMessageDialog("該使用者憑證找不到。錯誤代碼 : 1");
		} else if (lRtn == 4) {   
		    showErrorMessageDialog("您的憑證已過期或未插入金鑰。錯誤代碼 : 4");
		} else if (lRtn == 21) {
		    showErrorMessageDialog("金鑰密碼錯誤。錯誤代碼：21");
		} else if (lRtn == 23) {
		    showErrorMessageDialog("請插入金鑰。錯誤代碼：23");    
		} else {
			  showErrorMessageDialog("選擇憑證失敗。錯誤代碼:"+lRtn);		
		}
		return false;
	
	} 	else {
		
		frm.signerCert.value = CertDBClientObj.certificate;					
	}
	
	var vClientCN="";
	var vSubjectName = CertDBClientObj.subjectName;
	vClientCN = vSubjectName.lastIndexOf("=");//cn首次出現的位置
	frm.clientCN.value = vSubjectName.substring(vClientCN+1);
	
  //判斷key是否符合user			
	if (frm.clientCN.value!=frm.serverCN.value) {
	  	showErrorMessageDialog("此iKey之憑證非本行所發放！請確認iKey之正確性及有效性後，再重新登入。");
		  return false;
	}
	
	//放入簽章內容
	//alert("frm.data.value = " + frm.Data.value);
	if ((lRtn = P7SignatureClientObj.setDataContentByString(frm.md5Data.value)) != 0) {
		showErrorMessageDialog("無法建立文件字串。錯誤代碼:"+lRtn);
		return false;
	}	
			
	//sign
	if ((lRtn = P7SignatureClientObj.sign(frm.signerCert.value,"SHA1","RSA")) != 0) {
		showErrorMessageDialog("簽章失敗。錯誤代碼:"+lRtn);
		return false;
	}

		
	if (P7SignatureClientObj.getSignedEnvelopByString() == "") {
	    showErrorMessageDialog("簽章失敗！"); 
	    return false;
	}    
	
	//以Base64編碼字串方式取出此物件內的簽章電子信封
	frm.signedvalue.value = P7SignatureClientObj.getSignedEnvelopByString();
			
	return true;
}